// 导入Vue
import Vue from 'vue';
// 导入vuex
import Vuex from 'vuex';
// 导入持久化储存插件
import createPersistedState from 'vuex-persistedstate'
// 在Vue中应用插件/注册插件
import search from './modules/search';
import order from'./modules/order.js';
Vue.use(Vuex);

//配置对象

const store = new Vuex.Store({
	// 状态 存储共享的数据【只能读取，不允许更改A】
	state :{
		name:'',
		role:'',
		account:'',
		img:'',
	},
	// 创建同步函数，主要作用；修改state内部的数据【类似组将methods】
	mutations : {
		set(state,obj){
			state.name=obj.name;
			state.role=obj.role;
			state.account=obj.account;
			state.img=obj.img;
		},
		del(state){
			state.name='';
			state.role='';
			state.account='';
			state.img='';
		}
	},
	// 创建异步函数，主要作用：先被组将调用，然后在函数内部调用mutatios的同步函数
	actions : {
		setUser({state,commit},data){
			commit('set',data);
		},
		delHistory({state,commit}){
			commit('del');
		}
	},
	// 设置数据：不改变state数据，return返回另一个形式【类似组将computed】
	getters : {},
	//设置模块开发，指向按照功能将数据分别进行不同的模块
	// 跟注册登录相关的数据划分一个模块；购物车相关的数据一个模块；订单数据一个模块【数据量庞大且操作较多的功能区域】
	modules : {
		// 应用注册的搜索模块
		search,
		order,
	},
	
	// 设置store持久化储存，与本地缓存同步
	plugins :[createPersistedState()]
})

// 导出
export default store;